#include <iostream>


namespace DAY10
{
    class MyClass
    {
        public:
            void setData(int && x){
                // ...
                this->data = x;
            }
            
            void setData1(int & x){
                // ...
                this->data = x;
            }
            void setData2(int x){
                // ...
                this->data = x;
            }
            void setData3(int x) const {
                // 无法修改数据成员
                // ...
                // this->data = x;
                std::cout << "常成员函数,不能修改对象内部成员状态" << std::endl;
            }

            int getData() const {
                // 可以读取数据成员但无法修改
                return data;
            }
        private:
            int data;
    }; 
};



int main(int argc, char *argv[])
{
    // 常成员函数，不会修改对象的状态
    {
        using namespace DAY10;
        MyClass obj;
        int testA = 10;

        // 分类
        // obj.setData(10); // 传右值，使用右值引用
        // obj.setData1(testA); // 传左值，左值引用传递
        obj.setData2(10); // 拷贝传值，值传递
        obj.setData3(100); // 传右值，使用右值引用
        int value = obj.getData(); // 读取数据成员

        std::cout << "value: " << value << std::endl;
    }
    



    return 0;
}